class PageManager {
    constructor() {
        this.currentPage = 'home';
        this.pages = {};
        this.init();
    }

    init() {
        // 初始化页面切换事件
        document.querySelectorAll('.nav-link').forEach(link => {
            link.addEventListener('click', (e) => {
                e.preventDefault();
                const page = e.target.dataset.page;
                this.switchPage(page);
            });
        });

        // 监听浏览器前进后退
        window.addEventListener('popstate', (e) => {
            if (e.state && e.state.page) {
                this.switchPage(e.state.page, true);
            }
        });

        // 根据URL初始化页面
        // 默认显示首页
        this.switchPage('home');
    }

    switchPage(pageName, skipPushState = false) {
        // 隐藏所有页面
        document.querySelectorAll('.page-content').forEach(page => {
            page.style.display = 'none';
        });

        // 移除所有导航激活状态
        document.querySelectorAll('.nav-link').forEach(link => {
            link.classList.remove('active');
        });

        // 显示目标页面
        const targetPage = document.getElementById(`${pageName}-page`);
        if (targetPage) {
            targetPage.style.display = 'flex';
            // 添加过渡动画
            targetPage.style.animation = 'fadeIn 0.3s ease-in forwards';
        }

        // 激活对应导航
        const activeLink = document.querySelector(`.nav-link[data-page="${pageName}"]`);
        if (activeLink) {
            activeLink.classList.add('active');
        }

        // 更新URL
        if (!skipPushState) {
            history.pushState({ page: pageName }, '', `#${pageName}`);
        }

        // 清理当前页面资源
        if (this.currentPage && this.pages[this.currentPage]) {
            this.pages[this.currentPage].cleanup();
        }

        // 初始化新页面
        if (this.pages[pageName]) {
            this.pages[pageName].init();
        }

        this.currentPage = pageName;

        // 页面显示后，触发一次resize
        requestAnimationFrame(() => {
            window.dispatchEvent(new Event('resize'));
        });
    }

    registerPage(pageName, handlers) {
        this.pages[pageName] = handlers;
    }
}

// 创建页面管理器实例
const pageManager = new PageManager(); 